/********************************************************************************
クラス名　：　消しゴムクラス
クラス内容　：　手書き描線を消去するクラス　（未解読）
********************************************************************************/

package sww
{
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.display.BlendMode;
	
	public class Eraser extends Sprite
	{
		private var container:Sprite;
		private var remove:Sprite; // 後でremoveChildするためにクラススコープで...
		private var e:Boolean = false; // MouseDown中を判別するフラグ
		var drawSprite:Sprite = Sprite(addChild(new Sprite()));
   		var mouseSprite:Sprite = Sprite(addChild(new Sprite()));

		
		public function Eraser()
		{
			container = Sprite(addChild(new Sprite()));
		}

		private function drawModeStart(_mode:String="draw"):void
		{
   			var drawSprite:Sprite = Sprite(container.addChild(new Sprite()));
   			
   				if(_mode=="erase")drawSprite.blendMode = BlendMode.LAYER;
   				var mouseSprite:Sprite = Sprite(container.addChild(new Sprite()));
   				remove = mouseSprite;
   
   				// マウスイベント取得せないかんので透明な矩形描画
   				mouseSprite.graphics.drawRect(0,0,1600,1200); // 描画領域横幅x描画領域縦幅
   				mouseSprite.alpha = 0.0;
   
   				// イベントの付与
   				mouseSprite.addEventListener(MouseEvent.MOUSE_DOWN,enable);
   				mouseSprite.addEventListener(MouseEvent.MOUSE_MOVE,drawing);
   				mouseSprite.addEventListener(MouseEvent.MOUSE_UP,disable);
		}
		
		private function enable(evt:MouseEvent):void
		{
   			// drag開始
   			e = true;
   			// 現在のマウス位置へmoveTo
   			drawSprite.graphics.moveTo(drawSprite.mouseX,drawSprite.mouseY);
		}
		
		private function drawing(evt:MouseEvent):void
		{
   			if(e)
   			{
      			// drag中の場合のみ描画（lineTo）
      			drawSprite.graphics.lineTo(drawSprite.mouseX,drawSprite.mouseY);
   			}
		}

		private function disable(evt:MouseEvent):void
		{
   			// drag終了
   			e = false;
		}

		private function drawModeEnd():void
		{
   			if(container.contains(remove))container.removeChild(remove);
   			
   			// イベントの削除
   			mouseSprite.removeEventListener(MouseEvent.MOUSE_DOWN,enable);
   			mouseSprite.removeEventListener(MouseEvent.MOUSE_MOVE,drawing);
   			mouseSprite.removeEventListener(MouseEvent.MOUSE_UP,disable);
		}
	}
}